package br.com.foxinline.servico;

import br.com.foxinline.modelo.Ato;
import br.com.foxinline.modelo.Emolumento;
import br.com.foxinline.modelo.EmolumentoItem;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.persistence.Query;

/**
 *
 * @author cadomeireles
 */
@Stateless
public class EmolumentoServico extends ServicoGenerico<Emolumento> {

    @EJB
    EmolumentoItemServico emolumentoItemServico;
    
    public EmolumentoServico() {
        super(Emolumento.class);
    }

    @Override
    public void salvar(Emolumento emolumento) {        
        // Inativa emolumento atual
        try {
            Emolumento emolumentoAtivo = obterEmolumentoAtivo();
            emolumentoAtivo.setAtivo(false);
            super.atualizar(emolumentoAtivo);            
        } catch (Exception e) {

        }

        // Salva o novo emolumento já setado como ativo
        super.salvar(emolumento);
    }
    
    public Emolumento obterEmolumentoAtivo() {
        String sql = "select emolumento from Emolumento emolumento where emolumento.ativo = true";
        
        Query query = getEntityManager().createQuery(sql);
        
        return (Emolumento) query.getSingleResult();
    }   
    
    public List<Emolumento> pesquisar(Emolumento emolumento) {
        
        String sql = "select emolumento from Emolumento emolumento where (emolumento.ativo = true or emolumento.ativo = false)";
        
        if (!emolumento.getDescricao().isEmpty()) {
            sql += " and lower(emolumento.descricao) like '%" + emolumento.getDescricao() + "%'";
        }
        
        if (emolumento.getDataVigor() != null) {
            sql += " and emolumento.dataVigor = :data";
        }
        
        Query query = getEntityManager().createQuery(sql);
        
        if (emolumento != null && emolumento.getDataVigor() != null) {
            query.setParameter("data", emolumento.getDataVigor());
        }        
        
        return query.getResultList();        
    }
    
}
